SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TMDOCU_PROV_U04]
/*---------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                  --*/  
/*---Cliente              : OFISIS S.A.              	--*/  
/*---Sistema              : Tesoreria                    --*/  
/*---M«dulo               : Empresa                      --*/  
/*---Programa             : Generacion del Asiento        --*/  
/*---Script               : ttproc_i.sql                 --*/  
/*---Nombre SP            : SP_TMDOCU_PROV_U04           --*/  
/*---Desarrollado por     : Carlos Marquez Escobar		 --*/  
/*---Fecha Creaci«n       : 21/09/2005                   --*/  
/*---Base Datos           : Microsoft Sql Server         --*/  
/*---Versi«n              : 8.0                          --*/  
/*---Invoca a SP          :                              --*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/
/*---Modificado 1 por     : Carlos Marquez Escobar       --*/
/*---Fecha Modificaci÷n   : 21/09/2005                 	 --*/ 
/*---Detalle Modificaci÷n : Cargar Tabla Temporal		 --*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/  
/*---Comentarios  Generacion del Asiento de la TMDOCU_PROV--*/  
/*---                                                    --*/  
/*---                                                    --*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---Drop Proc SP_TMDOCU_PROV_U04                        --*/  
/*---Grant all on SP_TMDOCU_PROV_U04 to public           --*/
/*---
DROP Table #TWDOCU_PROV_EXCL
	Create Table #TWDOCU_PROV_EXCL
	(
	CO_EMPR      Varchar(2) Null,
	CO_PROV      Varchar(20) Null,
	CO_TIPO_DOCU Varchar(3)Null,
	NU_DOCU_PROV Varchar(20)Null,
	NU_CORR_ASTO Int IDENTITY (1, 1) NOT NULL,
	FE_EMIS Datetime,
	FE_REGI_COMP Datetime,
	CO_UNID_CONC Varchar(3)
	)

	Execute SP_TMDOCU_PROV_U04 '01', 'MAVERIC', '078', 'Luz_Sur.xls'
SP_TMDOCU_PROV_i04
														--*/
/*---------------------------------------------------------*/  
@ISCO_EMPR			TD_VC_002,
@ISCO_USUA_MODI		TD_VC_008,
@ISCO_TIPO_OPER		TD_VC_003,
@ISNO_ARCH			TD_VC_100
	As
Declare
@VSDE_SELE  VARCHAR(8000),
@VSRU_EXCE  VARCHAR(15)  ,
@VSST_INTE_BACH	TD_VC_001,
@VSTI_OPNI_CARG	TD_VC_001,
@VSTI_OPNI_ABON	TD_VC_001,
@VSST_ASTO_RESU	TD_VC_001,

@CSCO_PROV			TD_VC_020,
@CSCO_TIPO_DOCU		TD_VC_003,
@CSNU_DOCU_PROV		TD_VC_020,
@CDFE_EMIS			TD_DT_001,
@CDFE_REGI_COMP		TD_DT_001, 
@CSCO_UNID_CONC		TD_VC_003,

@VNNU_FETC_0002		TD_IN_001,   /* Status del 2do. cursor */      

@OSNU_ASTO			TD_VC_010

Begin TRAN SP_TMDOCU_PROV_U04

select @VSRU_EXCE = LTrim(RTrim(@ISNO_ARCH))

select @VSRU_EXCE = SubString(@VSRU_EXCE,1,Len(@VSRU_EXCE) - 4 )

Delete #TWDOCU_PROV_EXCL

Execute
("INSERT INTO #TWDOCU_PROV_EXCL
(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV, FE_EMIS, FE_REGI_COMP, CO_UNID_CONC ) "+
"SELECT	CO_EMPR, CO_PROV, CO_TIPO_DOCU, (Replicate('0', 15 - Len (NU_DOCU_PROV)) + NU_DOCU_PROV) NU_DOCU_PROV, FE_EMIS, 
FE_REGI_COMP, CO_UNID_CONC " +
" FROM	OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;DATABASE=D:\Recibos Energia\"
+@VSRU_EXCE+
"\"
+@ISNO_ARCH+
"', 'Select * from [CABECERA$]')" +
" ORDER BY NU_CORR"
)

	
	/**-----Verifica si es interface en Linea s/n------*/
	Select	@VSST_INTE_BACH = ST_INTE_BACH,  
			@VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER  
	From TMPARA_TESO 
	Where CO_EMPR = @ISCO_EMPR

	/**-----Verifica si se genera asientos Resumidos ------*/	
	Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))      
	From   TMOPRC_RESU t1 , TDTIPO_OPER t2      
	Where  t2.CO_EMPR = @ISCO_EMPR And      
	t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And      
	t1.CO_EMPR = t2.CO_EMPR And      
	t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB   

	/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/	
    If	@VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND 
		@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON  
	Begin


		/**-----Cursor para la generacion del asiento ------*/	
		Declare CU_TMDOCU_PROV_U04_1 Cursor       
		For      
		Select	CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV, FE_EMIS, FE_REGI_COMP, CO_UNID_CONC
		From	#TWDOCU_PROV_EXCL
		Where	CO_EMPR = @ISCO_EMPR 
		   And	Exists ( Select TMDOCU_PROV.NU_DOCU_PROV
							From	TMDOCU_PROV
							Where	TMDOCU_PROV.CO_EMPR = #TWDOCU_PROV_EXCL.CO_EMPR And
									TMDOCU_PROV.CO_TIPO_DOCU = 
#TWDOCU_PROV_EXCL.CO_TIPO_DOCU And
									TMDOCU_PROV.NU_DOCU_PROV = 
#TWDOCU_PROV_EXCL.NU_DOCU_PROV And
									TMDOCU_PROV.NU_ASTO is Null )
		Order By NU_CORR_ASTO
		
		Open CU_TMDOCU_PROV_U04_1      
		Fetch  CU_TMDOCU_PROV_U04_1 
		Into @CSCO_PROV, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CDFE_EMIS, @CDFE_REGI_COMP,  @CSCO_UNID_CONC
	
		Select @VNNU_FETC_0002 = @@FETCH_STATUS
		While (@VNNU_FETC_0002  = 0)      
		Begin      
			IF (@VNNU_FETC_0002  < 0)      
			Begin      
				Close CU_TMDOCU_PROV_U04_1      
				Deallocate CU_TMDOCU_PROV_U04_1      
				Return      
			END      
			
			/*-----Optiene el Numero de Asiento -----*/				
			EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @CSCO_UNID_CONC, @ISCO_TIPO_OPER, 
@CDFE_REGI_COMP, @OSNU_ASTO OUTPUT  
			IF (@@ERROR != 0)      
			BEGIN      
				Close CU_TMDOCU_PROV_U04_1      
				Deallocate CU_TMDOCU_PROV_U04_1      
				Rollback tran SP_TMDOCU_PROV_U04
				RETURN      
			END

			/*-----Actualiza el NU_ASTO, siempre y cuando sea Nulo -----*/				
			Update	TMDOCU_PROV
			Set		NU_ASTO	= @OSNU_ASTO,
					CO_TIPO_OPER = @ISCO_TIPO_OPER,
					ST_CONT = 'N',
					CO_USUA_MODI = @ISCO_USUA_MODI,
					FE_USUA_MODI = Getdate()
			Where	CO_EMPR = @ISCO_EMPR
				And CO_PROV = @CSCO_PROV
				And CO_TIPO_DOCU = @CSCO_TIPO_DOCU
				And NU_DOCU_PROV = @CSNU_DOCU_PROV
				And NU_ASTO is Null

			IF (@@ERROR != 0)      
			BEGIN      
				Close CU_TMDOCU_PROV_U04_1      
				Deallocate CU_TMDOCU_PROV_U04_1      
				Rollback tran SP_TMDOCU_PROV_U04
				RETURN      
			END
			
			Fetch  CU_TMDOCU_PROV_U04_1 
			Into @CSCO_PROV, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CDFE_EMIS, @CDFE_REGI_COMP,  @CSCO_UNID_CONC

			Select @VNNU_FETC_0002 = @@FETCH_STATUS
		End	--- Fin del While
		Close CU_TMDOCU_PROV_U04_1      
		Deallocate CU_TMDOCU_PROV_U04_1      
  	End --- Fin de la Validacion de Asientos Resumidos e Interfase en Bach

COMMIT TRAN SP_TMDOCU_PROV_U04
/*--------------------------- Fin -------------------------------- */


GO
